#ifndef _HEX_H
#define _HEX_H

#include <stdio.h>
#include "log.h"

//void print_hex(const char* src,int len);
void print_hex(const uint8_t* src,int len);
int hex2byteArray(const char* source, unsigned char* dest, int sourceLen);


/*
    * Description:     将字符串转换为16进制数组
    *                  转换规则：比如字符串‘ 01 2 34 ’，先不字符串去掉所有空格
    *                  ‘01234’，每2个字符串组成一个16进制数，字符串长度为单数则去掉最后一位。
    *                  如果包含非法字符GHIJ...会返回-1
    * Input:           source       字符串（'0123456789ABCDEF'）
    *                  sourceLen    source的长度
    *                  dest         返回的数组（0x01,0x23...），dest的长度最好>=(sourceLen/2 + 1)
    * Return:          int          >=0 : 成功，<0:失败
    */
int hex2byteArray_trim(const char* source, int sourceLen,unsigned char* dest);

   /*
    * Description:     低字节数据两两组合成一个字节
    *                   "0x30,0x31,0x3a,0x32,0x3c" 又补0x30使字节数为双数==》 "0x30,0x31,0x3a,0x32,0x3c,0x30",
    *                   组合成"0x01,0xa2,0xc0"
    * Input:           source       字符串（"0x30,0x31,0x3a,0x32,0x3c" ）
    *                  sourceLen    source的长度
    *                  dest         返回的数组，dest的长度最好>=(sourceLen/2 + 1)
    * Return:          int          >=0 : 成功，dest返回的实际长度
    *                               <0:失败
    */
int lbc2byteArray(const char* source, unsigned char* dest, int sourceLen);

/* ret的长度应该>=3 * length + 2 */
void byteArray2Hex(const uint8_t* src, int length,char ret[3 * length + 1]);

#endif